// 6_1 Use pointers to change the order of elements in an array.cpp : Defines the entry point for the console application.
//有n个整数，使其前面各数顺序向后移m个位置，最后m个数变成最前面的m个数。运行效果如下：
//未改变数组为：   1  2  3   4  5  6  7  8  9  10	
//改变后的数组为： 8  9  10  1  2  3  4  5  6  7	

#include "stdafx.h"

#include <iostream>
#include <math.h>
#include <stdlib.h>

using namespace std;

int length(int a[])//此处是想不用输入长度，只输入数组就可以运行，但还是和后面的运算矛盾了；
{
	int p=0;
	while(abs(*a)<10000)//数组中定义了未输入就是一个很大的数，本机上调试为-858993460
	{
		a++;
		p=p+1;
	}
	return p;
}

void main()
{
	int m;int b[100];int n;int a[100];
	cout<<"please input the number of bits shifted back:";
	cin>>m;
	cout<<"please input the length of the array";
	cin>>n;
	cout<<"please input the array:";
	for(int x=0;x<n;x++){//此处的n就是数组长度需不需要输入的矛盾点；
		cin>>a[x];
	}
//	int a[10]={1,2,3,4,5,6,7,8,9,10};
	for(int i=0;i<n;i++){
		if(i-m>=0){
			b[i]=*(a-m+i);
		}
		else{
			b[i]=*(a-m+i+n);
		}
	}
	for(int j=0;j<n;j++){
		cout<<b[j]<<" ";
	}
	cout<<endl<<"the length of the array is:"<<length(a)<<endl;
}//1 2 3 4 5 6 7 8 9 10 11 1 122 456 87 1 2 3 5


// FIXME:
//  1. 实现基本的版本，考虑如何用更少的存储空间实现相同的功能
//  2. 其他的程序类似的思考一下，并且考虑如何更好的测试所写的程序的确是正确的，你用的测试数据都比较简单
